Private Sub Worksheet_Change(ByVal Target As Range)
    Dim firstChangedColum, lastChangedColum, firstChangedCellInColumnC, lastChangedCellInColumnC
    Dim cellLen, eachChar, validValues, charSeq, last_row
    '----------> set the validate values  to be only in numbers or letters
    Const validValues = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    '----------> get active column  details when  it's area paste
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then
        firstChangedCellInColumnC = "C" & Mid(Target.Address, 4, (WorksheetFunction.Find(":", Target.Address, 1) - 4))
        lastChangedCellInColumnC = "C" & Mid(Target.Address, (WorksheetFunction.Find(":", Target.Address, 1) + 4), 5)
        firstChangedColum = Mid(Target.Address, 2, 1)
        lastChangedColum = Mid(Target.Address, WorksheetFunction.Find(":", Target.Address, 1) + 2, 1)
    Else
    '----------> get active column details when  it's singel cell paste
        firstChangedCellInColumnC = "C" & Mid(Target.Address, 4, 5)
        lastChangedCellInColumnC = "C" & Mid(Target.Address, 4, 5)
        lastChangedColum = Mid(Target.Address, 2, 1)
    End If
   '----------> try to validate the cell values if the changed range contains column C
    If firstChangedColum <= "C" And lastChangedColum >= "C" Then
    '----------> check if the values have been pasted from the beginning of ROW 7
        If WorksheetFunction.IsNonText(Range("C" & 7)) = True Then
            MsgBox ("Please enter valuses from the beginning of ROW 7")
            Application.EnableEvents = False
            Range(Target.Address).Select
            Selection.ClearContents
            Range("A7").Select
            Application.EnableEvents = True
            Exit Sub
        End If
    '----------> check of each cell in column C in the changed range to see if the value is only in numbers or letters
        last_row = Cells(100, 3).End(xlUp).Row
        For Each cell In Range(firstChangedCellInColumnC, lastChangedCellInColumnC)
    '----------> let user re-paste value if it's blank
            If WorksheetFunction.IsNonText(cell) = True Then
                Application.EnableEvents = False
                cell.Value = "Please re-enter as previous value is blank"
                Application.EnableEvents = True
            Else
    '----------> get the length of the current cell
                cellLen = Len(cell)
    '----------> let user re-paste value if its length is greater than 8
                If cellLen > 8 Then
                    Application.EnableEvents = False
                    cell.Value = "Please re-enter as the length of " & """" & cell & """" & " is greater than 8"
                    Application.EnableEvents = True
                Else
                    For m = 1 To cellLen
    '----------> get each character of the cell
                        eachChar = Mid(cell.Value, m, 1)
    '----------> check if the current character is only in numbers or letters
                        On Error Resume Next
                        charSeq = WorksheetFunction.Find(eachChar, validValues, 1)
                        If Err.Number <> 0 Then
                            Err.Clear
                            Application.EnableEvents = False
                            cell.Value = "The " & m & " character in " & """" & cell & """" & " is not valid"
                            Application.EnableEvents = True
                            Exit For
                        End If
                        On Error GoTo 0
                    Next
                End If
            End If
        Next
    End If
End Sub
